/**
 *单例模式
意图：保证一个类仅有一个实例，并提供一个访问它的全局访问点。

主要解决：一个全局使用的类频繁地创建与销毁。

何时使用：当您想控制实例数目，节省系统资源的时候。

如何解决：判断系统是否已经有这个单例，如果有则返回，如果没有则创建。

关键代码：构造函数是私有的。
 */

class Singleton1 {
    // 1 构造器私有化, 外部不能new
    private constructor() {
    }

    // 2 本类内部创建对象实例化

    private static instance: Singleton1;

    // 3 提供一个公有的静态方法, 返回实例对象
    public static getInstance(): Singleton1 {
        if (!this.instance) {
            this.instance = new Singleton1();
        }
        return this.instance;
    }

}
var a = Singleton1.getInstance();
var b = Singleton1.getInstance();
console.log('a', a);
console.log('b', b);
